package it.ap.sa.acqua.auth.policy;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Utility Policy manager
 * @author marianna
 */
public class RPolicyManagerFactory {

	private static final Logger logger = LoggerFactory.getLogger(RPolicyManagerFactory.class.getName());
	
	/**
	 * Restitisce l'istanza della classe che implementa la logica della policy
	 * 
	 * @param clazz
	 * 
	 * @return
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 */
	public static RPolicyManager getInstance(String clazz) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
		try{
			/**
			 * Per default il writer attivo è quello di default.
			 */
			Class<?> claz = Class.forName(clazz);
	    		
			return (RPolicyManager) claz.newInstance();
			
		}catch(ClassNotFoundException e){
			logger.error("La classe definita non è stata trovata .. " + e, e);
			throw(e);
		}
	}
}
